package com.xci.sys.dao;

import com.xci.sys.entity.SysDicCategory;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 字典类型数据层
 * @author 吕艳阳
 */
public interface DicCategoryDao {
    /**
     * 新建字典类型
     * @param entity 字典类型对象
     * @return 返回影响的行数
     */
    Integer insert(@Param("entity") SysDicCategory entity);

    /**
     * 修改字典类型
     * @param entity 字典类型对象
     * @return 返回影响的行数
     */
    Integer update(@Param("entity") SysDicCategory entity);

    /**
     * 根据主键更新排序路径
     * @param id 机构主键
     * @param path 排序路径
     * @return 返回影响的行数
     */
    Integer updatePath(@Param("id") String id, @Param("path") String path);

    /**
     * 根据主键更新父节点
     * @param id 机构主键
     * @param parentId 父节点
     * @return 返回影响的行数
     */
    Integer updateParentId(@Param("id") String id, @Param("parentId") String parentId);

    /**
     * 根据主键删除字典类型
     * @param id 字典类型主键
     * @return 返回影响的行数
     */
    Integer delete(@Param("id") String id);

    /**
     * 删除字典类型
     * @param code 字典类型编码
     * @return 返回影响的行数
     */
    Integer deleteByCode(@Param("code") String code);

    /**
     * 检查字典类型编码唯一性
     * @param code 字典类型编码
     * @param id 字典类型主键
     * @return 如果存在返回true, 否则返回false
     */
    Boolean existByCode(@Param("code") String code, @Param("id") String id);

    /**
     * 获取指定节点的直接子节点数
     * @param id 模块主键
     * @return 返回直接子节点数量
     */
    Integer selectChildCount(@Param("id") String id);

    /**
     * 查询单个字典类型
     * @param id 字典类型主键
     * @return 字典类型
     */
    SysDicCategory selectById(@Param("id") String id);

    /**
     * 查询单个字典类型
     * @param code 字典类型编码
     * @return 字典类型
     */
    SysDicCategory selectByCode(@Param("code") String code);

    /**
     * 查询字典类型列表
     * @return 返回字典类型列表
     */
    List<SysDicCategory> selectList();
}